﻿using System;
using System.Windows.Forms;
using AutomatedDecisionMaking.Class;
using AutomatedDecisionMaking.Class.Algorithms;

namespace AutomatedDecisionMaking.GUI.MaxiMaxWindow
{
    public partial class FrmMaxiMax : Form
    {
        private readonly MaxiMaxAlgorithm _mAlgorithm; /// Algorytm MaxiMax realizujący podejmowanie decyzji

        /// <summary>
        /// Konstruktor okna przedstawiającego wyniki działania algorytmu MaxiMax
        /// </summary>
        /// <param name="decisionMatrix">Macierz decyzji</param>
        public FrmMaxiMax(DecisionMatrix decisionMatrix)
        {
            InitializeComponent();
            _mAlgorithm = new MaxiMaxAlgorithm(decisionMatrix);
        }

        /// <summary>
        /// Metoda prywatna przygotowująca okno do reprezentacji wyników.
        /// Ładuje wyniki działania algorytmu w odpowiednie kontrolki.
        /// </summary>
        /// <param name="sender">Obiekt wywołujcy zdarzenie</param>
        /// <param name="e">Zdarzenie</param>
        private void FrmMaxiMax_Load(object sender, EventArgs e)
        {
            _mAlgorithm.CalculateSolution();
            var maxValue = _mAlgorithm.GetMaxValuesStr();
            var maxiMaxValue = _mAlgorithm.GetMaxiMaxValue();
            var decision = _mAlgorithm.GetDecision();

            foreach (string str in maxValue)
                ListBox_MaxVal.Items.Add(str);

            TextBox_MaxiMaxVal.Text = maxiMaxValue.ToString();

            Label_Decision.Text = decision;
        }
    }
}
